Vuetify is a popular UI framework for Vue apps.
In this article, we’ll look at how to work with the Vuetify framework.
Gradients
We add the gradient
prop can be used to apply a gradient overlay to the image.
For example, we can write:
<template>
<v-container fluid>
<v-row>
<v-col cols="6" sm="4">
<v-img
src="https://cdn.vuetifyjs.com/images/parallax/material2.jpg"
gradient="to top right, rgba(100,115,201,.33), rgba(25,32,72,.7)"
></v-img>
</v-col>
<v-col cols="6" sm="4">
<v-img src="https://cdn.vuetifyjs.com/images/parallax/material2.jpg">
<div class="fill-height bottom-gradient"></div>
</v-img>
</v-col>
<v-col cols="6" sm="4">
<v-img src="https://cdn.vuetifyjs.com/images/parallax/material2.jpg">
<div class="fill-height repeating-gradient"></div>
</v-img>
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({}),
};
</script>
to add an image with a div below it with the gradient.
Grid
We can put v-img
components in a grid.
For example, we can write:
<template>
<v-row>
<v-col cols="12" sm="6" offset-sm="3">
<v-card>
<v-container fluid>
<v-row>
<v-col v-for="n in 9" :key="n" class="d-flex child-flex" cols="4">
<v-card flat tile class="d-flex">
<v-img
:src="`https://picsum.photos/500/300?image=${n * 5 + 10}`"
:lazy-src="`https://picsum.photos/10/6?image=${n * 5 + 10}`"
aspect-ratio="1"
class="grey lighten-2"
>
<template v-slot:placeholder>
<v-row class="fill-height ma-0" align="center" justify="center">
<v-progress-circular indeterminate color="grey lighten-5"></v-progress-circular>
</v-row>
</template>
</v-img>
</v-card>
</v-col>
</v-row>
</v-container>
</v-card>
</v-col>
</v-row>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({}),
};
</script>
We create v-row
and v-col
to contain the images.
v-img
is in the v-card
so that it’s placed properly.
The placeholder
slot has the circular progress display to show when the image loads.
Lists
We can use the v-list
component to add lists to our app.
For example, we can write:
<template>
<v-row>
<v-col cols="12">
<v-card class="mx-auto" max-width="300" tile>
<v-list disabled>
<v-subheader>REPORTS</v-subheader>
<v-list-item-group v-model="item" color="primary">
<v-list-item v-for="(item, i) in items" :key="i">
<v-list-item-icon>
<v-icon v-text="item.icon"></v-icon>
</v-list-item-icon>
<v-list-item-content>
<v-list-item-title v-text="item.text"></v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list-item-group>
</v-list>
</v-card>
</v-col>
</v-row>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({
item: 1,
items: [
{ text: "Real-Time", icon: "mdi-clock" },
{ text: "Audience", icon: "mdi-account" },
{ text: "Conversions", icon: "mdi-flag" },
],
}),
};
</script>
We have a list with the v-list
component.
v-list-item
display the items.
v-list-item-icon
places the icon to the left of the text.
v-list-item-content
adds the content.
v-list-item-title
has the title text.
Conclusion
We can add gradients to images and lists with Vuetify.